Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

481
Views
¿Por qué la función split ("") de Kotlin da como resultado una cadena vacía inicial y final?

Soy un desarrollador de Java que probó Kotlin y encontró un caso contrario a la intuición entre estos dos lenguajes.

Considere el código dado en Kotlin:

 "???".split("") # gives ["", "?", "?", "?", ""]

y lo mismo en Java:

 "???".split("") # gives ["?", "?", "?"]

¿Por qué Kotlin produce una cadena de espacios vacíos al principio y al final en la matriz resultante? ¿O Java siempre elimina estas cadenas vacías, y simplemente no estaba al tanto de eso?

Sé que existe el método toCharArray() en cada Kotlin String , pero aún así, no es muy intuitivo (¿tal vez los desarrolladores de Java deberían abandonar los viejos hábitos de Java que esperaban reutilizar en un nuevo idioma?).

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Debe filtrar el primer y el último elemento:

 "???".split("").drop(1).dropLast(1)

Mira este ejemplo:

 "".split("") // [, ]

Divide esta secuencia de caracteres en una lista de cadenas alrededor de las apariciones de los delimitadores especificados.

Consulte https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split.html

over 4 years ago · Santiago Trujillo Report

0

Esto se debe a que el método Java split(String regex) los elimina explícitamente:

Este método funciona como si invocara el método de división de dos argumentos con la expresión dada y un argumento límite de cero. Por lo tanto, las cadenas vacías finales no se incluyen en la matriz resultante.

split(String regex, int limit) menciona:

Cuando hay una coincidencia de ancho positivo al comienzo de esta cadena, se incluye una subcadena inicial vacía al comienzo de la matriz resultante. Sin embargo, una coincidencia de ancho cero al principio nunca produce una subcadena inicial tan vacía.

"" es una coincidencia de ancho cero. No estoy seguro de por qué considera que toCharArray() no es intuitivo aquí, dividir por una cadena vacía para iterar sobre todos los caracteres es una forma indirecta de hacer las cosas. split() está destinado a la coincidencia de patrones y obtener grupos de cadenas.

PD: Revisé JDK 8, 11 y 17, el comportamiento parece ser consistente desde hace un tiempo.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!